#include <stdio.h>
#include <stdlib.h>

typedef struct BiTNode
{
    int data;
    BiTNode *lchild, *rchild;
} BiTNode, *BiTree;

// 树的初始化
bool InitTree(BiTree &root)
{
    root = (BiTree)malloc(sizeof(BiTNode));
    root->data = 0;
    root->lchild = NULL;
    root->rchild = NULL;
    return true;
}
bool addNode(BiTree &T, BiTNode *p)
{
    if (T == NULL)
        T = p;
    return true;
    return addNode(T->lchild, p);
    return addNode(T->rchild, p);
}

bool addValue(BiTree &T, int e)
{
    BiTNode *p = (BiTNode *)malloc(sizeof(BiTNode));
    p->data = e;
    p->lchild = NULL;
    p->rchild = NULL;
    addNode(T, p);
    return true;
}

// 结点访问
void visit(BiTNode *p)
{
    printf("%d", p->data);
}

// 前序遍历
void PreOrder(BiTree &T)
{
    if (T != NULL)
    {
        // 访问结点
        visit(T);
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}

// 中序遍历
void InOrder(BiTree &T)
{
    if (T != NULL)
    {
        InOrder(T->lchild);
        // 访问结点
        visit(T);
        InOrder(T->rchild);
    }
}

// 后序遍历
void PostOrder(BiTree &T)
{
    if (T != NULL)
    {
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        // 访问结点
        visit(T);
    }
}

int main()
{
    BiTree T;
    InitTree(T);
    addValue(T, 3);
    BiTNode *p = (BiTNode *)malloc(sizeof(BiTNode));
    p->data = 1;
    p->lchild = NULL;
    //addValue(T, 2);
    printf("%d", T->data);
    //InOrder(T);
}
